package demo7;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
//@Scope("prototype")
public class Person {
    private String name;
    //构造器是一个对象生命周期中第一个被调用的函数
    public Person(){

        System.out.println("1:Person的构造器被调用了");
    }

    public String getName() {
        return name;
    }
    //Spring会在对象实例化完毕后陆续调用set方法利用@Value注解为属性赋值
    @Value("张三")
    public void setName(String name) {
        System.out.println("2:name的set方法被调用了:setName()");
        this.name = name;
    }

    @PostConstruct
    public void init(){
        System.out.println("3:init方法被调用了!Spring容器将当前Person对象初始化完毕了!");
    }

    @PreDestroy
    public void preDestroy(){
        System.out.println("4:Spring容器在销毁当前对象前会调用这个方法...");
    }

}
